//
//  overload_++_operator.hpp
//  learnC++
//
//  Created by apple on 2018/6/5.
//  Copyright © 2018年 yunfan.com. All rights reserved.
//

#ifndef overload____operator_hpp
#define overload____operator_hpp

#include <stdio.h>

#include <iostream>

class Digit
{
private:
    int m_digit;
public:
    Digit(int digit=0)
    : m_digit(digit)
    {
    }
//  ++i
    Digit& operator++();// prefix
    Digit& operator--();// prefix
//  i++
//  C ++为后缀运算符使用“虚拟变量”或“伪参数”。 该参数是一个假整数参数，仅用于区分后缀版本的增量/减量与前缀版本
    Digit operator++(int); // postfix
    Digit operator--(int); // postfix
    //    我们通过在后缀版本中提供整数虚拟参数来区分后缀运算符的前缀。其次，由于虚拟参数没有在函数实现中使用，我们甚至没有给它起个名字。这告诉编译器把这个变量当作一个占位符，这意味着它不会警告我们我们声明了一个变量但从来没有使用它。

    friend std::ostream& operator<< (std::ostream &out, const Digit &d);
};

/*
 Digit digit(0);
 
 std::cout << digit++;
 
 std::cout << ++digit;
 */


#endif /* overload____operator_hpp */
